[アップデート] Amazon DynamoDB Global Tableがマルチリージョンの強い整合性をサポートしました (プレビュー) #AWSreinvent
マルチリージョンでも強い整合性を持たせたいな
こんにちは、のんピ(@non____97)です。
皆さんはマルチリージョンでも強い整合性を持たせたいなと思ったことはありますか? 私はあります。
マルチリージョンでデータをレプリケーションするようなDBでは結果整合性となっている場合が多いです。そのため、タイミングによっては古いデータを参照してしまうことがあります。
アプリケーションによってはそのような事象は許容できないことがあります。
今回、Amazon DynamoDB Global Tableは、マルチリージョンの強い整合性をサポート(プレビュー)するようになりました。
これにより、よりトランザクションがシビアなシステムであっても、RPOがゼロの可用性の高いマルチリージョンアプリケーションを構築することが可能になります。
対応リージョン
2024/12/3時点の対応リージョンは以下の3つです。
- バージニア北部
- オハイオ
- オレゴン
お値段
気になるお値段ですが、通常のDynamoDB Global Tableと同じでした。
ただし、強力な整合性の読み取りをする場合、4KBのサイズまでのアイテムだと1秒あたり1読み取り要求に対して1RCUを消費します。4KBを超えるアイテムには追加のRCUが必要です。要するに結果整合性読み取りと比べて2倍のコストがかかります。
これは通常のリージョナルなDynamoDBテーブルと同じですね。
試してみた
実際に試してみます。
既存のDynamoDBテーブルをGlobal Tableとしようとしてみます。
オプションを見ると強固な一貫性
が追加されていますね。どうやら複数リージョンにレプリカを作成するようです。また、プレビューであるため本番環境で使わないように念押しされています。
すると、Regional table cannot contain data when creating a global table with MultiRegionConsistency set to STRONG
とエラーになりました。
アイテムがある状態では強い整合性のGlobal Tableの設定はできないようです。
新しく用意したまっさらなDynamoDBテーブルの場合は正常に設定できました。
少しすると、レプリカ作成のステータスを確認できました。
その後数分でアクティブになりました。
結果整合性のGlobal Tableと同じく、DyanamoDB Streamsが有効になっています。DyanamoDB Streamsを用いてレプリケーションすることは同じのようです。
レプリカであるオレゴンからみたDynamoDBテーブルは以下のとおりです。
試しにレプリカを削除しようとしてみます。
はい、Replica cannot be deleted because it has acted as a source region for new replica(s) being added to the table in the last 24 hours.
と24時間経過していないため削除できないとエラーになりました。
シビアなシステムをマルチリージョンで展開する場合に
プレビューですが、Amazon DynamoDB Global Tableは、マルチリージョンの強い整合性をサポートするようになったアップデートを紹介しました。
シビアなシステムをマルチリージョンで展開する場合は選択肢に必ず入ってくるでしょう。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!